home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1996-05-01 | 27.7 KB | 959 lines | [ TEXT/MPS ]
; ; File: Dictionary.a ; ; Contains: Dictionary Manager Interfaces ; ; Version: Technology: System 8 ; Release: Universal Interfaces 3.0d3 on Copland DR1 ; ; Copyright: © 1984-1996 by Apple Computer, Inc. All rights reserved. ; ; Bugs?: If you find a problem with this file, send the file and version ; information (from above) and the problem description to: ; ; Internet: apple.bugs@applelink.apple.com ; AppleLink: APPLE.BUGS ; ; IF &TYPE('__DICTIONARY__') = 'UNDEFINED' THEN __DICTIONARY__ SET 1 IF &TYPE('__TYPES__') = 'UNDEFINED' THEN include 'Types.a' ENDIF IF FOR_SYSTEM8_PREEMPTIVE THEN IF &TYPE('__AEDATAMODEL__') = 'UNDEFINED' THEN include 'AEDataModel.a' ENDIF IF &TYPE('__AEREGISTRY__') = 'UNDEFINED' THEN include 'AERegistry.a' ENDIF IF &TYPE('__FILEMANAGERTYPES__') = 'UNDEFINED' THEN include 'FileManagerTypes.a' ENDIF ENDIF IF FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED THEN IF &TYPE('__FILES__') = 'UNDEFINED' THEN include 'Files.a' ENDIF ENDIF ; ;============================================================================================= ; System 8 Dictionary Manager ;============================================================================================= ; IF FOR_SYSTEM8_PREEMPTIVE THEN ; typedef UInt32 DCMUniqueID IF FOR_PTR_BASED_AE THEN DCMFieldDataList RECORD 0 f ds AERecord sizeof EQU * ; size: $8 (8) ENDR ENDIF ; typedef DCMObjectID DCMAccessMethodID ; typedef DCMObjectID DCMDictionaryID kDCMInvalidObjectID EQU 0 ; typedef DCMObjectRef DCMDictionaryRef ; typedef DCMObjectRef DCMDictionaryStreamRef ; typedef DCMObjectRef DCMFieldInfoRef kDCMInvalidObjectRef EQU 0 ; typedef DCMObjectIterator DCMAccessMethodIterator ; typedef DCMObjectIterator DCMDictionaryIterator ; ; Field specification declarations ; ; typedef FourCharCode DCMFieldTag ; typedef FourCharCode DCMFieldType DCMFieldSubType RECORD 0 f ds UInt64 sizeof EQU * ; size: $8 (8) ENDR kDCMAnyFieldTag EQU '****' kDCMAnyFieldType EQU '****' ; ; Dictionary information ; kDCMDictionaryHeaderVersion EQU 1 DCMDictionaryHeader RECORD 0 headerSignature ds.l 1 ; offset: $0 (0) headerVersion ds.l 1 ; offset: $4 (4) headerSize ds.l 1 ; offset: $8 (8) accessMethod ds Str63 ; offset: $C (12) sizeof EQU * ; size: $4C (76) ENDR ; typedef OptionBits DCMFieldAttribute kDCMIndexedFieldMask EQU $00000001 kDCMRequiredFieldMask EQU $00000002 kDCMIdentifyFieldMask EQU $00000004 kDCMFixedSizeFieldMask EQU $00000008 kDCMHiddenFieldMask EQU $80000000 ; ; Standard dictionary properties ; ; created/updated by AccessMethod. ; data type: typeSInt16 kDCMPermissionPropertyTag EQU 'perm' ; created/updated by AccessMethod. ; data type: typeSInt16 kDCMMaintenancePropertyTag EQU 'mtnc' ; created by AccessMethod. default = kLocaleIdentifierWildCard. ; data type: typeUInt32 kDCMLocalePropertyTag EQU 'locl' ; optional. ; data type: typeType kDCMClassPropertyTag EQU 'clas' ; optional. ; data type: typeChar (ASCII string) kDCMCopyrightPropertyTag EQU 'info' ; ; 'perm' property constants ; kDCMReadOnlyDictionary EQU 0 kDCMReadWriteDictionary EQU 1 kDCMFrozenDictionary EQU 2 ; ; Standard search method ; ; typedef OSType DCMFindMethodType kDCMExactMatchMethod EQU '= ' kDCMBeginningMatchMethod EQU 'bgwt' kDCMContainsMatchMethod EQU 'cont' kDCMEndingMatchMethod EQU 'ends' kDCMForwardTrieMethod EQU 'ftri' ; used for morphological analysis kDCMBackwardTrieMethod EQU 'btri' ; used for morphological analysis ; ; AccessMethod features ; ; typedef OptionBits DCMAccessMethodFeature kDCMCanUseFileDictionaryMask EQU $00000001 kDCMCanUseMemoryDictionaryMask EQU $00000002 kDCMCanStreamDictionaryMask EQU $00000004 kDCMCanHaveMultipleIndexMask EQU $00000008 kDCMCanModifyDictionaryMask EQU $00000010 kDCMCanCreateDictionaryMask EQU $00000020 kDCMCanAddDictionaryFieldMask EQU $00000040 kDCMCanUseTransactionMask EQU $00000080 ; ; Error values ; dcmParamErr EQU -7100 ; bad parameter dcmNotDictionaryErr EQU -7101 ; not dictionary dcmBadDictionaryErr EQU -7102 ; invalid dictionary dcmPermissionErr EQU -7103 ; invalid permission dcmDictionaryNotOpenErr EQU -7104 ; dictionary not opened dcmDictionaryBusyErr EQU -7105 ; dictionary is busy dcmBadDictionaryTypeErr EQU -7106 ; bad dictionary type dcmBlockFullErr EQU -7107 ; dictionary block full dcmNoRecordErr EQU -7108 ; no such record dcmDupRecordErr EQU -7109 ; same record already exist dcmNecessaryFieldErr EQU -7110 ; lack required/identify field dcmBadFieldInfoErr EQU -7111 ; incomplete information dcmBadFieldTypeErr EQU -7112 ; no such field type supported dcmNoFieldErr EQU -7113 ; no such field exist dcmDupFieldErr EQU -7114 ; field already exist dcmBadKeyErr EQU -7115 ; bad key information dcmTooManyKeyErr EQU -7116 ; too many key field dcmBadDataSizeErr EQU -7117 ; too big data size dcmBadFindMethodErr EQU -7118 ; no such find method supported dcmBadPropertyErr EQU -7119 ; no such property exist dcmEndOfStreamErr EQU -7120 ; reaches end of stream dcmProtectedErr EQU -7121 ; need keyword to use dictionary dcmNoAccessMethodErr EQU -7122 ; no such AccessMethod dcmDupAccessMethodErr EQU -7123 ; AccessMethod already exist dcmBadFeatureErr EQU -7124 ; invalid AccessMethod feature dcmAccessMethodBusyErr EQU -7125 ; AccessMethod is busy dcmIterationCompleteErr EQU -7126 ; no more item in iterator dcmBufferOverflowErr EQU -7127 ; data is larger than buffer size dcmChangesCommittedErr EQU -7128 ; changes cannot be backed out ; ; Callback routines ; ; ; Create dictionary ; ; ; extern OSStatus DCMNewDictionary(DCMAccessMethodID accessMethod, FSObjectRef containerRef, ConstFSName dictionaryName, ItemCount numOfField, const DCMFieldInfoRef field[2147483647], Boolean invisible, ItemCount recordCapacity, DCMDictionaryID *newDictionary) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMNewDictionary ENDIF ; ; extern OSStatus DCMDeriveNewDictionary(DCMDictionaryID srcDictionary, FSObjectRef containerRef, ConstFSName dictionaryName, Boolean invisible, ItemCount recordCapacity, DCMDictionaryID *newDictionary) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMDeriveNewDictionary ENDIF ; ; Register dictionary ; ; ; extern OSStatus DCMRegisterDictionaryFile(FSObjectRef dictionaryFile, DCMDictionaryID *dictionaryID) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMRegisterDictionaryFile ENDIF ; ; extern OSStatus DCMRegisterDictionaryStream(DCMRegisterStreamProc myRegisterProc, void *refcon, ByteCount dictionarySize, DCMDictionaryID *dictionaryID) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMRegisterDictionaryStream ENDIF ; ; extern OSStatus DCMUnregisterDictionary(DCMDictionaryID dictionaryID) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMUnregisterDictionary ENDIF ; ; Open dictionary ; ; ; extern OSStatus DCMOpenDictionary(DCMDictionaryID dictionaryID, ByteCount protectKeySize, LogicalAddress protectKey, DCMDictionaryRef *dictionaryRef) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMOpenDictionary ENDIF ; ; extern OSStatus DCMCloseDictionary(DCMDictionaryRef dictionaryRef) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMCloseDictionary ENDIF ; ; Change access privilege ; ; ; extern OSStatus DCMGetDictionaryWriteAccess(DCMDictionaryRef dictionaryRef, Duration timeOutDuration) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetDictionaryWriteAccess ENDIF ; ; extern OSStatus DCMReleaseDictionaryWriteAccess(DCMDictionaryRef dictionaryRef, Boolean commitTransaction) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMReleaseDictionaryWriteAccess ENDIF ; ; Find records ; ; ; extern OSStatus DCMFindRecords(DCMDictionaryRef dictionaryRef, DCMFieldTag keyFieldTag, ByteCount keySize, ConstLogicalAddress keyData, DCMFindMethodType findMethod, ItemCount preFetchedDataNum, DCMFieldTag preFetchedData[2147483647], ItemCount skipCount, ItemCount maxRecordCount, DCMFoundRecordIterator *recordIterator) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMFindRecords ENDIF ; ; extern ItemCount DCMCountRecordIterator(DCMFoundRecordIterator recordIterator) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMCountRecordIterator ENDIF IF FOR_PTR_BASED_AE THEN ; ; extern OSStatus DCMIterateFoundRecord(DCMFoundRecordIterator recordIterator, ByteCount maxKeySize, ByteCount *actualKeySize, LogicalAddress keyData, DCMUniqueID *uniqueID, DCMFieldDataList *dataList) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMIterateFoundRecord ENDIF ENDIF ; ; extern OSStatus DCMDisposeRecordIterator(DCMFoundRecordIterator recordIterator) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMDisposeRecordIterator ENDIF ; ; Dump dictionary ; ; ; extern OSStatus DCMGetNextRecord(DCMDictionaryRef dictionaryRef, DCMFieldTag keyFieldTag, ByteCount keySize, ConstLogicalAddress keyData, DCMUniqueID uniqueID, ByteCount maxKeySize, ByteCount *nextKeySize, LogicalAddress nextKeyData, DCMUniqueID *nextUniqueID) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetNextRecord ENDIF ; ; extern OSStatus DCMGetPrevRecord(DCMDictionaryRef dictionaryRef, DCMFieldTag keyFieldTag, ByteCount keySize, ConstLogicalAddress keyData, DCMUniqueID uniqueID, ByteCount maxKeySize, ByteCount *prevKeySize, LogicalAddress prevKeyData, DCMUniqueID *prevUniqueID) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetPrevRecord ENDIF ; ; extern OSStatus DCMGetNthRecord(DCMDictionaryRef dictionaryRef, DCMFieldTag keyFieldTag, ItemCount serialNum, ByteCount maxKeySize, ByteCount *keySize, LogicalAddress keyData, DCMUniqueID *uniqueID) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetNthRecord ENDIF ; ; extern OSStatus DCMGetRecordSequenceNumber(DCMDictionaryRef dictionaryRef, DCMFieldTag keyFieldTag, ByteCount keySize, ConstLogicalAddress keyData, DCMUniqueID uniqueID, ItemCount *sequenceNum) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetRecordSequenceNumber ENDIF ; ; Get field data ; IF FOR_PTR_BASED_AE THEN ; ; extern OSStatus DCMGetFieldData(DCMDictionaryRef dictionaryRef, DCMFieldTag keyFieldTag, ByteCount keySize, ConstLogicalAddress keyData, DCMUniqueID uniqueID, ItemCount numOfData, const DCMFieldTag dataTag[2147483647], DCMFieldDataList *dataList) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetFieldData ENDIF ; ; extern OSStatus DCMSetFieldData(DCMDictionaryRef dictionaryRef, DCMFieldTag keyFieldTag, ByteCount keySize, ConstLogicalAddress keyData, DCMUniqueID uniqueID, DCMFieldDataList dataList) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMSetFieldData ENDIF ENDIF ; ; extern OSStatus DCMAnnotateTextObjectWithFieldData(DCMDictionaryRef dictionaryRef, DCMFieldTag keyTag, DCMUniqueID uniqueID, ItemCount numDataField, const DCMFieldTag data[2147483647], TextObject keyText) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMAnnotateTextObjectWithFieldData ENDIF ; ; Add record ; IF FOR_PTR_BASED_AE THEN ; ; extern OSStatus DCMAddRecord(DCMDictionaryRef dictionaryRef, DCMFieldTag keyFieldTag, ByteCount keySize, ConstLogicalAddress keyData, Boolean checkOnly, DCMFieldDataList dataList, DCMUniqueID *newUniqueID) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMAddRecord ENDIF ENDIF ; ; extern OSStatus DCMDeleteRecord(DCMDictionaryRef dictionaryRef, DCMFieldTag keyFieldTag, ByteCount keySize, ConstLogicalAddress keyData, DCMUniqueID uniqueID) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMDeleteRecord ENDIF ; ; extern OSStatus DCMCopyRecord(DCMDictionaryRef srcDictionary, DCMFieldTag keyFieldTag, ByteCount keySize, ConstLogicalAddress keyData, DCMUniqueID uniqueID, DCMDictionaryRef targetDictionary, Boolean checkOnly, DCMUniqueID *newUniqueID) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMCopyRecord ENDIF ; ; Add field ; ; ; extern OSStatus DCMAddField(DCMDictionaryID dictionaryID, DCMFieldInfoRef fieldInfo, DCMProgressProc progressProcPtr, void *procRefcon) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMAddField ENDIF ; ; extern OSStatus DCMDeleteField(DCMDictionaryID dictionaryID, DCMFieldTag fieldTag, DCMProgressProc progressProcPtr, void *procRefcon) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMDeleteField ENDIF ; ; Get dictionary information ; ; ; extern OSStatus DCMCountRecord(DCMDictionaryID dictionaryID, ItemCount *count) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMCountRecord ENDIF ; ; extern OSStatus DCMGetDictionaryInformarion(DCMDictionaryID dictionaryID, DCMAccessMethodID *accessMethod, Boolean *isProtected) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetDictionaryInformarion ENDIF ; ; extern OSStatus DCMGetDictionaryFieldList(DCMDictionaryID dictionaryID, ItemCount maxFieldNum, ItemCount *actualFieldNum, DCMFieldTag fieldTag[2147483647], DCMFieldType fieldType[2147483647]) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetDictionaryFieldList ENDIF ; ; extern OSStatus DCMGetDictionaryFieldInfo(DCMDictionaryID dictionaryID, DCMFieldTag fieldTag, DCMFieldInfoRef fieldInfo) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetDictionaryFieldInfo ENDIF ; ; extern OSStatus DCMGetFileRefFromDictionaryID(DCMDictionaryID dictionaryID, FSObjectRef *fileRef) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetFileRefFromDictionaryID ENDIF ; ; extern OSStatus DCMGetDictionaryIDFromFile(FSObjectRef fileRef, DCMDictionaryID *dictionaryID) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetDictionaryIDFromFile ENDIF ; ; extern DCMDictionaryID DCMGetDictionaryIDFromRef(DCMDictionaryRef dictionaryRef) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetDictionaryIDFromRef ENDIF ; ; extern UInt32 DCMGetDictionaryChangeCount(DCMDictionaryID dictionaryID) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetDictionaryChangeCount ENDIF ; ; Dictionary property ; ; ; extern OSStatus DCMGetDictionaryProperty(DCMDictionaryID dictionaryID, DCMFieldTag propertyTag, ByteCount maxPropertySize, ByteCount *actualSize, LogicalAddress propertyValue) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetDictionaryProperty ENDIF ; ; extern OSStatus DCMSetDictionaryProperty(DCMDictionaryID dictionaryID, DCMFieldTag propertyTag, ByteCount propertySize, ConstLogicalAddress propertyValue) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMSetDictionaryProperty ENDIF ; ; extern OSStatus DCMGetDictionaryPropertyList(DCMDictionaryID dictionaryID, ItemCount maxPropertyNum, ItemCount *numProperties, DCMFieldTag propertyTag[2147483647]) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetDictionaryPropertyList ENDIF ; ; Get dictionary stream ; ; ; extern OSStatus DCMCreateDictionaryStream(DCMDictionaryID dictionaryID, DCMDictionaryStreamRef *stream) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMCreateDictionaryStream ENDIF ; ; extern OSStatus DCMReadDictionaryStream(DCMDictionaryStreamRef stream, ByteCount maxSize, ByteCount *actualSize, LogicalAddress buffer) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMReadDictionaryStream ENDIF ; ; extern OSStatus DCMDisposeDictionaryStream(DCMDictionaryStreamRef stream) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMDisposeDictionaryStream ENDIF ; ; Reorganize/compact dictionary ; ; ; extern OSStatus DCMReorganizeDictionary(DCMDictionaryID dictionaryID, ItemCount extraCapacity, DCMProgressProc progressProcPtr, void *procRefcon) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMReorganizeDictionary ENDIF ; ; extern OSStatus DCMFreezeDictionary(DCMDictionaryID dictionaryID, DCMProgressProc progressProcPtr, void *procRefcon) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMFreezeDictionary ENDIF ; ; extern OSStatus DCMUnfreezeDictionary(DCMDictionaryID dictionaryID, ItemCount extraCapacity, DCMProgressProc progressProcPtr, void *procRefcon) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMUnfreezeDictionary ENDIF ; ; Seaarch dictionary ; ; ; extern OSStatus DCMCreateDictionaryIterator(DCMDictionaryIterator *dictionaryIterator) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMCreateDictionaryIterator ENDIF ; ; extern OSStatus DCMFindDictionaryByField(DCMFieldTag desiredTag, DCMFieldType desiredType, DCMFieldAttribute attributeMask, ItemCount numOfFindMethod, const DCMFindMethodType neededMethods[2147483647], ByteCount requiredFieldSize, Boolean dataTypeTranslation, Boolean writeFieldData, Boolean findProtected, DCMDictionaryIterator dictionaryIterator) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMFindDictionaryByField ENDIF ; ; extern OSStatus DCMFindDictionaryByProperty(DCMFieldTag propertyTag, ByteCount propertySize, ConstLogicalAddress propertyValue, DCMDictionaryIterator dictionaryIterator) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMFindDictionaryByProperty ENDIF ; ; Search AccessMethod ; ; ; extern OSStatus DCMCreateAccessMethodIterator(DCMAccessMethodIterator *accessMethodIterator) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMCreateAccessMethodIterator ENDIF ; ; extern OSStatus DCMFindAccessMethodByField(DCMFieldType fieldType, Boolean keyField, ItemCount numOfFindMethod, const DCMFindMethodType neededMethods[2147483647], ByteCount requiredSize, Boolean dataTypeTranslation, DCMAccessMethodIterator accessMethodIterator) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMFindAccessMethodByField ENDIF ; ; extern OSStatus DCMFindAccessMethodByFeature(DCMAccessMethodFeature neededFeature, DCMAccessMethodIterator accessMethodIterator) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMFindAccessMethodByFeature ENDIF ; ; Iterator Operation ; ; ; extern ItemCount DCMCountObjectIterator(DCMObjectIterator iterator) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMCountObjectIterator ENDIF ; ; extern OSStatus DCMIterateObject(DCMObjectIterator iterator, DCMObjectID *objectID) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMIterateObject ENDIF ; ; extern OSStatus DCMResetObjectIterator(DCMObjectIterator iterator) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMResetObjectIterator ENDIF ; ; extern OSStatus DCMDisposeObjectIterator(DCMObjectIterator iterator) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMDisposeObjectIterator ENDIF ; ; Register AccessMethod ; ; ; extern OSStatus DCMRegisterAccessMethod(FSObjectRef accessMethodFile, ItemCount maxAccessMethodNum, ItemCount *accessMethodNum, DCMAccessMethodID accessMethod[2147483647]) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMRegisterAccessMethod ENDIF ; ; extern OSStatus DCMUnregisterAccessMethod(DCMAccessMethodID accessMethod) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMUnregisterAccessMethod ENDIF ; ; Get AccessMethod information ; ; ; extern OSStatus DCMGetAccessMethodInformation(DCMAccessMethodID accessMethod, ByteCount maxNameLen, ByteCount *nameLength, LogicalAddress libraryName, UInt32 *version, DCMAccessMethodFeature *feature) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetAccessMethodInformation ENDIF ; ; extern OSStatus DCMGetAccessMethodFieldInfoList(DCMAccessMethodID accessMethod, ItemCount maxFieldNum, ItemCount *numOfField, DCMFieldInfoRef fieldInfo[2147483647]) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetAccessMethodFieldInfoList ENDIF ; ; Operators for DCMFieldInfoRef ; ; ; extern OSStatus DCMCreateFieldInfoRef(DCMFieldInfoRef *fieldInfo) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMCreateFieldInfoRef ENDIF ; ; extern OSStatus DCMDisposeFieldInfoRef(DCMFieldInfoRef fieldInfo) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMDisposeFieldInfoRef ENDIF ; ; extern OSStatus DCMSetFieldInfoTagType(DCMFieldInfoRef fieldInfo, DCMFieldTag fieldTag, DCMFieldType fieldType, const DCMFieldSubType *subType) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMSetFieldInfoTagType ENDIF ; ; extern OSStatus DCMSetFieldInfoMaxSize(DCMFieldInfoRef fieldInfo, ByteCount maximumSize) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMSetFieldInfoMaxSize ENDIF ; ; extern OSStatus DCMSetFieldInfoAttribute(DCMFieldInfoRef fieldInfo, DCMFieldAttribute attribute) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMSetFieldInfoAttribute ENDIF ; ; extern OSStatus DCMSetFieldInfoName(DCMFieldInfoRef fieldInfo, ItemCount numOfName, const ConstTextObject fieldName[2147483647]) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMSetFieldInfoName ENDIF ; ; extern OSStatus DCMSetFieldInfoFindType(DCMFieldInfoRef fieldInfo, ItemCount numOfType, DCMFindMethodType findMethodType[2147483647]) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMSetFieldInfoFindType ENDIF ; ; extern OSStatus DCMSetFieldInfoFindName(DCMFieldInfoRef fieldInfo, DCMFindMethodType findMethodType, ItemCount numOfName, const ConstTextObject findMethodName[2147483647]) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMSetFieldInfoFindName ENDIF ; ; extern OSStatus DCMSetFieldInfoDefaultData(DCMFieldInfoRef fieldInfo, ByteCount dataSize, ConstLogicalAddress defaultData) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMSetFieldInfoDefaultData ENDIF ; ; extern OSStatus DCMGetFieldInfoTagType(DCMFieldInfoRef fieldInfo, DCMFieldTag *fieldTag, DCMFieldType *fieldType, DCMFieldSubType *subType) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetFieldInfoTagType ENDIF ; ; extern OSStatus DCMGetFieldInfoMaxSize(DCMFieldInfoRef fieldInfo, ByteCount *maximumSize) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetFieldInfoMaxSize ENDIF ; ; extern OSStatus DCMGetFieldInfoAttribute(DCMFieldInfoRef fieldInfo, DCMFieldAttribute *attribute) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetFieldInfoAttribute ENDIF ; ; extern OSStatus DCMGetFieldInfoName(DCMFieldInfoRef fieldInfo, LocaleIdentifier nameLocale, TextObject fieldName) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetFieldInfoName ENDIF ; ; extern OSStatus DCMGetFieldInfoNameList(DCMFieldInfoRef fieldInfo, ItemCount maxNameNum, ItemCount *numOfName, TextObject fieldName[2147483647]) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetFieldInfoNameList ENDIF ; ; extern OSStatus DCMGetFieldInfoFindTypeList(DCMFieldInfoRef fieldInfo, ItemCount maxMethodNum, ItemCount *numOfMethod, DCMFindMethodType findMethodType[2147483647]) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetFieldInfoFindTypeList ENDIF ; ; extern OSStatus DCMGetFieldInfoFindName(DCMFieldInfoRef fieldInfo, DCMFindMethodType findMethodType, LocaleIdentifier nameLocale, TextObject findMethodName) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetFieldInfoFindName ENDIF ; ; extern OSStatus DCMGetFieldInfoFindNameList(DCMFieldInfoRef fieldInfo, DCMFindMethodType findMethodType, ItemCount maxNameNum, ItemCount *numOfName, TextObject findMethodName[2147483647]) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetFieldInfoFindNameList ENDIF ; ; extern OSStatus DCMGetFieldInfoDefaultData(DCMFieldInfoRef fieldInfo, ByteCount maxDataSize, ByteCount *actualSize, LogicalAddress defaultData) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMGetFieldInfoDefaultData ENDIF ; ; API for AccessMethod only ; ; ; extern OSStatus DCMAddFoundRecordToIterator(ByteCount keySize, ConstLogicalAddress keyData, DCMUniqueID uniqueID, DCMFieldType fieldType[2147483647], ByteCount dataSize[2147483647], ConstLogicalAddress data[2147483647], DCMFoundRecordIterator recordIterator) ; IF GENERATINGCFM THEN IMPORT_CFM_FUNCTION DCMAddFoundRecordToIterator ENDIF ENDIF ; ;============================================================================================= ; System 7 Dictionary Manager ;============================================================================================= ; IF FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED THEN ; Dictionary data insertion modes kInsert EQU 0 ; Only insert the input entry if there is nothing in the dictionary that matches the key. kReplace EQU 1 ; Only replace the entries which match the key with the input entry. kInsertOrReplace EQU 2 ; Insert the entry if there is nothing in the dictionary which matches the key, otherwise replaces the existing matched entries with the input entry. ; This Was InsertMode ; typedef short DictionaryDataInsertMode ; Key attribute constants kIsCaseSensitive EQU $10 ; case sensitive = 16 kIsNotDiacriticalSensitive EQU $20 ; diac not sensitive = 32 ; Registered attribute type constants. kNoun EQU -1 kVerb EQU -2 kAdjective EQU -3 kAdverb EQU -4 ; This Was AttributeType ; typedef SInt8 DictionaryEntryAttribute ; Dictionary information record DictionaryInformation RECORD 0 dictionaryFSSpec ds FSSpec ; offset: $0 (0) numberOfRecords ds.l 1 ; offset: $46 (70) currentGarbageSize ds.l 1 ; offset: $4A (74) script ds.w 1 ; offset: $4E (78) maximumKeyLength ds.w 1 ; offset: $50 (80) keyAttributes ds.b 1 ; offset: $52 (82) ORG 84 sizeof EQU * ; size: $54 (84) ENDR DictionaryAttributeTable RECORD 0 datSize ds.b 1 ; offset: $0 (0) datTable ds.b 1 ; offset: $1 (1) <-- really an array of length one sizeof EQU * ; size: $2 (2) ENDR ; typedef struct DictionaryAttributeTable * DictionaryAttributeTablePtr ; ; pascal OSErr InitializeDictionary(const FSSpec *theFsspecPtr, SInt16 maximumKeyLength, SInt8 keyAttributes, ScriptCode script) ; IF ¬ GENERATINGCFM THEN Macro _InitializeDictionary move.w #$0500,D0 dc.w $AA53 EndM ELSE IMPORT_CFM_FUNCTION InitializeDictionary ENDIF ; ; pascal OSErr OpenDictionary(const FSSpec *theFsspecPtr, SInt8 accessPermission, SInt32 *dictionaryReference) ; IF ¬ GENERATINGCFM THEN Macro _OpenDictionary move.w #$0501,D0 dc.w $AA53 EndM ELSE IMPORT_CFM_FUNCTION OpenDictionary ENDIF ; ; pascal OSErr CloseDictionary(SInt32 dictionaryReference) ; IF ¬ GENERATINGCFM THEN Macro _CloseDictionary move.w #$0202,D0 dc.w $AA53 EndM ELSE IMPORT_CFM_FUNCTION CloseDictionary ENDIF ; ; pascal OSErr InsertRecordToDictionary(SInt32 dictionaryReference, ConstStr255Param key, Handle recordDataHandle, DictionaryDataInsertMode whichMode) ; IF ¬ GENERATINGCFM THEN Macro _InsertRecordToDictionary move.w #$0703,D0 dc.w $AA53 EndM ELSE IMPORT_CFM_FUNCTION InsertRecordToDictionary ENDIF ; ; pascal OSErr DeleteRecordFromDictionary(SInt32 dictionaryReference, ConstStr255Param key) ; IF ¬ GENERATINGCFM THEN Macro _DeleteRecordFromDictionary move.w #$0404,D0 dc.w $AA53 EndM ELSE IMPORT_CFM_FUNCTION DeleteRecordFromDictionary ENDIF ; ; pascal OSErr FindRecordInDictionary(SInt32 dictionaryReference, ConstStr255Param key, DictionaryAttributeTablePtr requestedAttributeTablePointer, Handle recordDataHandle) ; IF ¬ GENERATINGCFM THEN Macro _FindRecordInDictionary move.w #$0805,D0 dc.w $AA53 EndM ELSE IMPORT_CFM_FUNCTION FindRecordInDictionary ENDIF ; ; pascal OSErr FindRecordByIndexInDictionary(SInt32 dictionaryReference, SInt32 recordIndex, DictionaryAttributeTablePtr requestedAttributeTablePointer, Str255 recordKey, Handle recordDataHandle) ; IF ¬ GENERATINGCFM THEN Macro _FindRecordByIndexInDictionary move.w #$0A06,D0 dc.w $AA53 EndM ELSE IMPORT_CFM_FUNCTION FindRecordByIndexInDictionary ENDIF ; ; pascal OSErr GetDictionaryInformation(SInt32 dictionaryReference, DictionaryInformation *theDictionaryInformation) ; IF ¬ GENERATINGCFM THEN Macro _GetDictionaryInformation move.w #$0407,D0 dc.w $AA53 EndM ELSE IMPORT_CFM_FUNCTION GetDictionaryInformation ENDIF ; ; pascal OSErr CompactDictionary(SInt32 dictionaryReference) ; IF ¬ GENERATINGCFM THEN Macro _CompactDictionary move.w #$0208,D0 dc.w $AA53 EndM ELSE IMPORT_CFM_FUNCTION CompactDictionary ENDIF ENDIF ENDIF ; __DICTIONARY__